package tp.tecnicasdisenio.model.factory;

import tp.tecnicasdisenio.dao.impl.jdbc.AlumnoDao;
import tp.tecnicasdisenio.dao.impl.jdbc.MateriaDao;
import tp.tecnicasdisenio.model.ReglaInterface;
import tp.tecnicasdisenio.model.accion.AccionAltaMateria;
import tp.tecnicasdisenio.model.parser.ParserTituloAltaMateria;
import tp.tecnicasdisenio.model.regla.ReglaAltaMateria;
import tp.tecnicasdisenio.model.validador.ValidadorAltaMateria;

public class ReglaAltaMateriaFactory implements ReglaFactoryInterface {
	
	public static ReglaAltaMateriaFactory instance;
	
	private ReglaAltaMateriaFactory(){
	}
	
	public static synchronized ReglaAltaMateriaFactory getInstance(){
		if(instance == null){
			instance= new ReglaAltaMateriaFactory();
		}
		return instance;
	}

	@Override
	public ReglaInterface crear() {
		ValidadorAltaMateria validadorAltaMateria= new ValidadorAltaMateria();
		validadorAltaMateria.setAlumnoDao(AlumnoDao.getInstance());
		validadorAltaMateria.setMateriaDao(MateriaDao.getInstance());
		validadorAltaMateria.setParserTituloAltaMateria(new ParserTituloAltaMateria());
		
		AccionAltaMateria accionAltaMateria= new AccionAltaMateria();
		accionAltaMateria.setAlumnoDao(AlumnoDao.getInstance());
		accionAltaMateria.setMateriaDao(MateriaDao.getInstance());
		accionAltaMateria.setParserTituloAltaMateria(new ParserTituloAltaMateria());
		accionAltaMateria.setValidadorAltaMateria(validadorAltaMateria);
		
		ReglaAltaMateria reglaAltaMateria= new ReglaAltaMateria();
		reglaAltaMateria.setParserTitulo(new ParserTituloAltaMateria());
		reglaAltaMateria.nuevaAccion(accionAltaMateria);
		
		return reglaAltaMateria;
	}

}
